package com.yasenagat.zkweb.ctrl;

import com.yasenagat.zkweb.entity.Customer;
import com.yasenagat.zkweb.service.ZkQueryService;
import com.yasenagat.zkweb.util.ZkCache;
import com.yasenagat.zkweb.util.ZkCfgFactory;
import com.yasenagat.zkweb.util.ZkCfgManager;
import com.yasenagat.zkweb.util.ZkManagerImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.net.URLDecoder;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@Controller
@RequestMapping("/zkcfg")
public class ZkCfgController {
	
	private static final Logger log = LoggerFactory.getLogger(ZkCfgController.class);

	@Autowired
	ZkQueryService zkQueryService;

//	static ZkCfgManager zkCfgManager = ZkCfgFactory.createZkCfgManager();

	//刷新页面时调用 展示内容
	@RequestMapping(value="/queryZkCfg")
	public @ResponseBody
    Map<String, Object> queryZkCfg(
            @RequestParam(required=false) int page,
            @RequestParam(required=false) int rows, @RequestParam(required=false) String whereSql){
		
		try {
			log.info(new Date()+"");
			Map<String, Object> _map = new HashMap<String, Object>();

			//TODO 模糊查询条件解析
			String[] str1 = whereSql.split(" ");
			String[] str2 = whereSql.split(" ");

			//TODO 返回查询结果
			Page<Customer> customers =  zkQueryService.findCustomerNoCriteria(page,rows);
			Map<String, Object> map = new HashMap<>();
			for (Customer customer:customers){
				map.put(String.valueOf(customer.getId()),customer.getAddress());
			}
			_map.put("rows",map);
			//TODO 返回总记录数
			_map.put("total", zkQueryService.totalCount());

			return _map;
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e.getMessage(),e);
		}
		return null;
	}
	
//	@RequestMapping(value="/addZkCfg",produces="text/html;charset=UTF-8")
//	public @ResponseBody
//    String addZkCfg(
//			@RequestParam(required=false) String desc,
//			@RequestParam(required=false) String connectstr,
//			@RequestParam(required=false) String sessiontimeout){
//
//		try {
//			//String id = UUID.randomUUID().toString().replaceAll("-", "");
//			String id = UUID.randomUUID().toString();
//			if(ZkCfgFactory.createZkCfgManager().add(id,desc, connectstr, sessiontimeout)){
//				ZkCache.put(id, ZkManagerImpl.createZk().connect(connectstr,Integer.parseInt(sessiontimeout)));
//			};
//
//		} catch (Exception e) {
//			e.printStackTrace();
//			log.error(e.getMessage(),e);
//			return "添加失败";
//		}
//		return "添加成功";
//	}
//
//	@RequestMapping(value="/queryZkCfgById")
//	public @ResponseBody
//    Map<String, Object> queryZkCfg(
//			@RequestParam(required=false) String id){
//
//		try {
//			return ZkCfgFactory.createZkCfgManager().findById(id);
//		} catch (Exception e) {
//			e.printStackTrace();
//			log.error(e.getMessage(),e);
//		}
//		return null;
//	}
//
//	@RequestMapping(value="/updateZkCfg",produces="text/html;charset=UTF-8")
//	public @ResponseBody
//    String updateZkCfg(
//			@RequestParam(required=true) String id,
//			@RequestParam(required=false) String desc,
//			@RequestParam(required=false) String connectstr,
//			@RequestParam(required=false) String sessiontimeout){
//
//		try {
//			if(ZkCfgFactory.createZkCfgManager().update(id,desc, connectstr, sessiontimeout)){
//				ZkCache.put(id, ZkManagerImpl.createZk().connect(connectstr,Integer.parseInt(sessiontimeout)));
//			};
//
//		} catch (Exception e) {
//			e.printStackTrace();
//			log.error(e.getMessage(),e);
//			return "保存失败";
//		}
//		return "保存成功";
//	}
//
//	@RequestMapping(value="/delZkCfg",produces="text/html;charset=UTF-8")
//	public @ResponseBody
//    String delZkCfg(
//			@RequestParam(required=true) String id){
//
//		try {
//			ZkCfgFactory.createZkCfgManager().delete(id);
//			ZkCache.remove(id);
//
//
//		} catch (Exception e) {
//			e.printStackTrace();
//			log.error(e.getMessage(),e);
//			return "删除失败";
//		}
//		return "删除成功";
//	}
}
